inspector: Add a setting to disable the keybinding
authorMatthias Clasen <mclasen@redhat.com>
Tue, 13 May 2014 18:16:53 +0000 (14:16 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 13 May 2014 19:20:36 +0000 (15:20 -0400)
This will be needed for lockdown, e.g. on the login screen.
https://bugzilla.gnome.org/show_bug.cgi?id=730007

docs/reference/gtk/running.sgml
gtk/Makefile.am
gtk/gtkwindow.c
gtk/org.gtk.Settings.Debug.gschema.xml [new file with mode: 0644]

index f545667797b6798ef70ab3ab31dff2dd13d3ac8a..36cac1ce24c3ac2abe7b623b018823be2b24d362 100644 (file)
@@ -529,6 +529,8 @@ nevertheless.
 <refsect2 id="interactive-debugging">
 <title>Interactive debugging</title>
 
+  <inlinegraphic fileref="inspector.png" format="PNG"></inlinegraphic>
+
   <para>
     GTK+ includes an interactive debugger which lets you explore the
     widget tree of any GTK+ application at runtime, as well as tweak
@@ -539,8 +541,12 @@ nevertheless.
     Control-Shift-D keyboard shortcuts, or pass set the
     <envar>GTK_DEBUG=interactive</envar> environment variable.
   </para>
-
-  <inlinegraphic fileref="inspector.png" format="PNG"></inlinegraphic>
+  <para>
+    In some situations, it may be inappropriate to give users access
+    to the interactive debugger. The keyboard shortcuts can be disabled
+    with the `enable-inspector-keybinding` key in the `org.gtk.Settings.Debug`
+    GSettings schema.
+  </para>
  
 </refsect2>
 
index 26539a9845da67b48ebc3770831601df1bcade9b..f4e567d83c94f806a7b89d0737528107c21b54a4 100644 (file)
@@ -1787,10 +1787,18 @@ endif
           --source builtin_icons stock-icons > gtkbuiltincache.h.tmp &&        \
        mv gtkbuiltincache.h.tmp gtkbuiltincache.h
 
+gsettings_SCHEMAS = \
+       org.gtk.Settings.FileChooser.gschema.xml \
+       org.gtk.Settings.ColorChooser.gschema.xml \
+       org.gtk.Settings.Debug.gschema.xml
+
+@GSETTINGS_RULES@
+
 EXTRA_DIST +=                   \
        $(resource_files)       \
        $(STOCK_ICONS)          \
        $(GENERATED_ICONS)      \
+       $(gsettings_SCHEMAS)    \
        gtk-win32.rc            \
        gtk-win32.rc.in         \
        gtkwin32embed.h         \
@@ -1809,15 +1817,7 @@ EXTRA_DIST +=                   \
        gtktypebuiltins.c.template \
        gtktypebuiltins.h.template \
        gtkprivatetypebuiltins.c.template \
-       gtkprivatetypebuiltins.h.template \
-       org.gtk.Settings.FileChooser.gschema.xml \
-       org.gtk.Settings.ColorChooser.gschema.xml
-
-gsettings_SCHEMAS = \
-       org.gtk.Settings.FileChooser.gschema.xml \
-       org.gtk.Settings.ColorChooser.gschema.xml
-
-@GSETTINGS_RULES@
+       gtkprivatetypebuiltins.h.template
 
 install-data-local:
 
index 105e0e072b2b4c78cd08b9865b9b523f713b1a39..071c37efe6c1c370dc329b4f3120ee4c88b3001b 100644 (file)
@@ -12471,10 +12471,37 @@ gtk_window_set_interactive_debugging (gboolean enable)
     gtk_widget_hide (inspector_window);
 }
 
+static gboolean
+inspector_keybinding_enabled (void)
+{
+  GSettingsSchema *schema;
+  GSettings *settings;
+  gboolean enabled;
+
+  enabled = FALSE;
+
+  schema = g_settings_schema_source_lookup (g_settings_schema_source_get_default (),
+                                            "org.gtk.Settings.Debug",
+                                            FALSE);
+  if (schema)
+    {
+      settings = g_settings_new_full (schema, NULL, NULL);
+      enabled = g_settings_get_boolean (settings, "enable-inspector-keybinding");
+      g_object_unref (settings);
+      g_settings_schema_unref (schema);
+    }
+
+  return enabled;
+}
+
 static void
 gtk_window_toggle_debugging (GtkWindow *window)
 {
-  if (GTK_IS_WIDGET (inspector_window) && gtk_widget_is_visible (inspector_window))
+  if (!inspector_keybinding_enabled ())
+    return;
+
+  if (GTK_IS_WIDGET (inspector_window) &&
+      gtk_widget_is_visible (inspector_window))
     gtk_window_set_interactive_debugging (FALSE);
   else
     gtk_window_set_interactive_debugging (TRUE);
diff --git a/gtk/org.gtk.Settings.Debug.gschema.xml b/gtk/org.gtk.Settings.Debug.gschema.xml
new file mode 100644 (file)
index 0000000..db3ff64
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist>
+
+  <schema id='org.gtk.Settings.Debug' path='/org/gtk/settings/debug/'>
+    <key name='enable-inspector-keybinding' type='b'>
+      <default>true</default>
+      <summary>Enable inspector keybinding</summary>
+      <description>
+        If this setting is true, GTK+ lets the user open an interactive
+        debugging window with a keybinding. The default shortcuts for
+        the keybinding are Control-Shift-I and Control-Shift-D.
+      </description>
+    </key>
+  </schema>
+
+</schemalist>
+